Android Navigation
最初にここを読むのが、具体的な部分も見えていいかも。
Navigation Architecture Commponentは単一Activity上でFragmentによる遷移を実現します
Resource xmlを追加します。
作成したNavigation GraphをActivityに設定します。
作成したNavigation Graphを元に画面遷移を制御するのがNavHostFragmentです
android:name="androidx.navigation.fragment.NavHostFragment"
manifestのactivityに、<nav-graph android:value="@navigation/xxx_navigation" />を忘れない
で、navigate()の引数に actionId
findNavController().navigate(R.id.action_next1_go_next)
fragmentを backstackに積むか積まないかは、
app:popUpTo="@id/mainFragment , app:popUpToInclusive="false"
global action
actionの定義がfragmentの外にあり
これ以上細かいのは、必要になった時に。
menuなどを使った navigationの例もある。
onCreateOptionsMenuで menu xmlをinflateさせる
itemのcallback設定
code: onOptionsItemSelected.kt
override fun onOptionsItemSelected(item: MenuItem): Boolean {
return item.onNavDestinationSelected(findNavController(R.id.my_nav_host_fragment))
|| super.onOptionsItemSelected(item)
}
bottom_navigationには、
viewの拡張メソッドとして、setupWithNavController( NavController)というものがあるので、それを使う
bottom_nav_view.setupWithNavController(navController)
actionBarには、Activityクラスに setupActionBarWithNavController(navController, appBarConfig)がある。j
補足: 3つのkey parts
1. Navigation Graph (New XML resource) - This is a resource that contains all navigation-related information in one centralized location. This includes all the places in your app, known as destinations, and possible paths a user could take through your app.
2. NavHostFragment (Layout XML view) - This is a special widget you add to your layout. It displays different destinations from your Navigation Graph.
3. NavController (Kotlin/Java object) - This is an object that keeps track of the current position within the navigation graph. It orchestrates swapping destination content in the NavHostFragment as you move through a navigation graph.
Graph, Fragment, Controller(manager)の3つ
上記の codeblabをやると、
Resourceフォルダに navigationというフォルダに Navigation Graphのxmlがある。
<navigation>タグに配下に、<fragment>が子要素として入り、属性として destinaationや actionがある。
bottomNavigationなどで使う。
https://gyazo.com/2faa66a8488ec478c5ff1ce60179292b
from simple button clicks to more complex patterns, such as app bars and the navigation drawer.
UIとしては、普通のボタンから、app barsやnavigation drawerまで、いろいろな部品(Android View)がある ViewModel(Android ViewModel) support - you can scope a ViewModel to a navigation graph to share UI-related data between the graph's destinations 参考:
https://gyazo.com/1a4ee19a15a99a2f571f56c74e6aaa2b